In [1]:
%pylab inline

import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import * #3D-s ábrák alcsomagja
from ipywidgets import *  #interaktivitáshoz szükséges függvények
Populating the interactive namespace from numpy and matplotlib
In [2]:
# Az abra kimentesehez az alabbiakat a plt.show()  ele kell tenni!!! 

#savefig('fig_rainbow_p2_1ray.pdf');  # Abra kimentese
#savefig('fig_rainbow_p2_1ray.eps');  # Abra kimentese

# Abra es fontmeretek
xfig_meret= 6   #    12 nagy abrahoz
yfig_meret= 6    #   12 nagy abrahoz
xyticks_meret= 15  #  20 nagy abrahoz
xylabel_meret= 15  #  30 nagy abrahoz
legend_meret= 21   #  30 nagy abrahoz
In [3]:
def dispTB(X,Y,Z):
    return(-cos(X)-cos(Y)-cos(Z))

Valence band around $\Gamma$ point for Si including spin orbit coupling

Heavy Hole and Light Hole

$E_{HH}(\mathbf{ k}) =- \frac{\hbar^2}{2 m_e}\,\left[ A k^2-\sqrt{B^2 k^4+ C^2\left(k_x^2 k_y^2 + k_y^2 k_z^2 +k_z^2 k_x^2\right)}\right]$ $E_{LH}(\mathbf{ k}) =- \frac{\hbar^2}{2 m_e}\,\left[ A k^2+\sqrt{B^2 k^4+ C^2\left(k_x^2 k_y^2 + k_y^2 k_z^2 +k_z^2 k_x^2\right)}\right]$,

where $A = 4.27, B = 0.63, C= 4.93 $ for Silicon

See Eq. (20.2.9) on page 206 in Jenő Sólyom: Fundamentals of the Physics of Solids, Volume 2: Electronic Properties (A modern szilárdtes-tfizika alpajai II. Fémek, félvezetők, szupravezetők).

In [16]:
# Silicium savszerkezete, spin-palya kolcsonhatassal
# Solyom Jeno, II. kotet, 885. old., (20.2.9) egyenlet
def dispSi(kx,ky,kz,params):
    A, B, C = params
    k2 = kx*kx+ky*ky+kz*kz
    k4 = k2*k2
    tmp = sqrt(B*B*k4+C*C*(kx*kx*ky*ky+ky*ky*kz*kz+kz*kz*kx*kx))
    eHH = - (A*k2-tmp)   #  heavy hole
    eLH = - (A*k2+tmp)   #  light hole
    
    return([eHH,eLH])
In [17]:
A = 4.27
B = 0.63
C= 4.93
params = [A,B,C]
dispSi(pi,0.27,0,params)
Out[17]:
[-34.923083193342499, -49.985904391960609]
In [33]:
Npoints=100;

kmax=pi/10
kxlist = linspace(-kmax,kmax,Npoints)
 
heavy_hole = [];
light_hole = [];

for kx_ in kxlist:
    heavy_hole.append(dispSi(kx_,0,0,params)[0])
    light_hole.append(dispSi(kx_,0,0,params)[1])

plot(kxlist,heavy_hole,color='b') 
plot(kxlist,light_hole,color='r')

cim = "Heavy (blue) and light (red) hole bands for Si, along $k_x$"
title(cim,fontsize=xylabel_meret)

xlim(-0.25,0.25)
ylim(-0.32,0)

grid();

savefig('Si_heavy_light_hole_kx.png');  # Abra kimentese
In [23]:
# creating sample of k points 

kpoints = 500   # number of k points in the Brillouin zone 

klim = 1.0

kran=linspace(-klim,klim,kpoints ) #  Brilloin zone 2*pi x 2*pi square
X,Y=meshgrid(kran,kran)
kgrid=transpose(array([X.flatten(),Y.flatten()]))
In [24]:
dat = [];

for kv in kgrid:
    dat.append(dispSi(kv[0],kv[1],0,params))

dat=array(dat)  

# reading the eigenvalues from 'dat' 
# az elso 2 beolvasasa a Z1, Z2  array-be: 
Z1 = reshape(dat[:,0],(kpoints, kpoints))  # heavy hole
Z2 = reshape(dat[:,1],(kpoints, kpoints))  # light hole

#ncont = 8  # a contour-vonalak szama, pl. ncont = 11

e_szintek = [-2, -1, -0.5] #  ezek a kontans energia ertekek
In [25]:
figsize(xfig_meret,yfig_meret)


subplot(1,1,1,aspect='equal')

plot((0, 1.2), (0, 0), 'k-')
plot((0, 0), (0, 1.2), 'k-')

annotate(r'$k_x$', xy=(1.,0.), xytext=(0.85,0.05),fontsize=21)
annotate(r'$k_y$', xy=(0.,1.), xytext=(0.05,0.87),fontsize=21)


cp1=contour(X, Y, Z1, levels=e_szintek, alpha=1, colors='blue', linestyles='-',linewidths=2)
clabel(cp1, inline=True,  fontsize=10)
cp2=contour(X, Y, Z2, levels=e_szintek, alpha=1, colors='red', linestyles='--',linewidths=2)
clabel(cp2, inline=True,  fontsize=10)

cim = "Heavy (blue) and light (red) hole bands for Si, $k_z =0$"
title(cim,fontsize=xylabel_meret)

xlim(-klim,klim)
ylim(-klim,klim)


grid();

#savefig('Si_heavy_light_hole.png');  # Abra kimentese
In [ ]: